package com.example.thread.d9CompletableFuture2.d3异步任务回调;

import com.example.thread.d9CompletableFuture2.CommonUtils;

import java.util.concurrent.CompletableFuture;

/**
 * 通过thenAccept(Consumer<T>)对链式操作中上一个异步任务的结果进行消费使用，不返回新结果
 * 甚至都不使用上一步链式操作的结果，那么CompletableFuture.thenRun()会是你最佳
 * 的选择，它需要一个Runnable并返回CompletableFuture<void>,通常用在链式操作的末端
 */
public class D3ThenRunDemo {
    public static void main(String[] args) {
        CommonUtils.printThreadLog("main start");

        CompletableFuture.supplyAsync(()-> {
            CommonUtils.printThreadLog("开始读取文件");
            String readFile = CommonUtils.readFile("读取开始");
            return readFile;
        }).thenRun(()-> {
            CommonUtils.printThreadLog("读取文件完成");
        });

        CommonUtils.printThreadLog("main continue");
        CommonUtils.sleepSecond(4);
        CommonUtils.printThreadLog("main end");


    }
}
